GtkInspector: Add a function to select the widget under the pointer
authorMatthias Clasen <mclasen@redhat.com>
Sun, 6 Jul 2014 21:03:53 +0000 (17:03 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 7 Jul 2014 02:37:57 +0000 (22:37 -0400)
gtk/inspector/inspect-button.c
gtk/inspector/window.h

index db88a8c858777dbabb4f2c7b98007306fe394055..f55874b41df24343403ed0c2039ac451cde9412f 100644 (file)
@@ -200,6 +200,21 @@ start_flash (GtkInspectorWindow *iw,
   gtk_widget_queue_draw (widget);
 }
 
+static void
+select_widget (GtkInspectorWindow *iw,
+               GtkWidget          *widget)
+{
+  iw->selected_widget = widget;
+
+  gtk_notebook_set_current_page (GTK_NOTEBOOK (iw->top_notebook), 0);
+
+  gtk_inspector_widget_tree_scan (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
+                                  gtk_widget_get_toplevel (widget));
+
+  gtk_inspector_widget_tree_select_object (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
+                                           G_OBJECT (widget));
+}
+
 static void
 on_inspect_widget (GtkWidget          *button,
                    GdkEvent           *event,
@@ -213,18 +228,8 @@ on_inspect_widget (GtkWidget          *button,
 
   widget = find_widget_at_pointer (gdk_event_get_device (event));
 
-  if (widget == NULL)
-    return;
-
-  iw->selected_widget = widget;
-
-  gtk_notebook_set_current_page (GTK_NOTEBOOK (iw->top_notebook), 0);
-
-  gtk_inspector_widget_tree_scan (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
-                                  gtk_widget_get_toplevel (widget));
-
-  gtk_inspector_widget_tree_select_object (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
-                                           G_OBJECT (widget));
+  if (widget)
+    select_widget (iw, widget);
 }
 
 static void
@@ -401,4 +406,22 @@ gtk_inspector_stop_highlight (GtkWidget *widget)
   gtk_widget_queue_draw (widget);
 }
 
+void
+gtk_inspector_window_select_widget_under_pointer (GtkInspectorWindow *iw)
+{
+  GdkDisplay *display;
+  GdkDeviceManager *dm;
+  GdkDevice *device;
+  GtkWidget *widget;
+
+  display = gtk_widget_get_display (GTK_WIDGET (iw));
+  dm = gdk_display_get_device_manager (display);
+  device = gdk_device_manager_get_client_pointer (dm);
+
+  widget = find_widget_at_pointer (device);
+
+  if (widget)
+    select_widget (iw, widget);
+}
+
 /* vim: set et sw=2 ts=2: */
index 42a882861b6992f80fa4981e43178b5b724325eb..6256832d07d6ef9d63baf0cdb4f1d500e46c753b 100644 (file)
@@ -83,6 +83,9 @@ void       gtk_inspector_flash_widget       (GtkInspectorWindow *iw,
                                              GtkWidget          *widget);
 void       gtk_inspector_start_highlight    (GtkWidget          *widget);
 void       gtk_inspector_stop_highlight     (GtkWidget          *widget);
+
+void       gtk_inspector_window_select_widget_under_pointer (GtkInspectorWindow *iw);
+
                                             
 
 G_END_DECLS